文档章节

关于作用域的一個 bug 的笔记

沙枣
 沙枣
发布于 2017/10/22 18:05
字数 353
阅读 5
收藏 0

togo 和 toperl 的行为不同,原来是 togo 在处理 for exprs 时,没有按照 block 来处理。

函数和方法,都会建立一个名字为函数名的命名空间,而 block 是匿名的命名空间。在解析时,会按照解析顺序用累加器,来为每个 block 来命名。

    if cond block
    elif cond block
    else block

    given cond block
    when cond block
    then block

    while cond block
    for cond block

LintMyAst 时,会进入一个命名空间为包名的空间,但因为没有结束语句,在解析结束时,并不会从当前命名空间退出,只是将 block 计数器清零。而 perl / go 解析相同语法树的代码时,并不需要重新进入这个包,只是需要在合适的地方,切换到不同的空间,就可以获取已经定义的变量和函数资源,从而随时获取有需要的信息,为代码转换提供方便。

  1. 进入 func, def 时,切换到以函数名为名字的命名空间,但不会把代码当成 block 处理

  2. 进入 if/elif/else given/when/then for/while block 时切换命名空间。

  3. 解析完语法树时,将计数器清零,以便为后来的代码转换提供良好的开端。

但在解析语法树开始时,要习惯的将计数器清零,以防止出错。

© 著作权归作者所有

沙枣
粉丝 23
博文 103
码字总数 72499
作品 0
深圳
后端工程师
私信 提问
【譯】12.2.4 解析狀態 Parse state - HTML Standard

HTML Living Standard — Last Updated 20 August 2017 12.2.4 Parse state Parts of this specification are © Copyright 2004-2014 Apple Inc., Mozilla Foundation, and Opera Software......

Pandorym
2017/08/20
0
0
[C++] NetBeans 7 : unable to start pty process

不久前,我常用的 NetBeans IDE 出了點狀況,那就是當我用 C/C++ 寫程式的時候會一直跳出 unable to start pty process ,也就是呢,無法執行程式的意思。 嗯? 怎會這樣? 原本我以為是程式的...

枫兮兮
2014/03/13
174
0
变量函数命令 - Hugarian , Camel & Pascal

一、匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中。 Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙...

AlphaJay
2011/09/15
139
0
调试监控工具--DaiMethodTracing

DaiMethodTracing 概念起源於 debug 時候的一些想法,有時候想看看每個 method 的傳值是不是正確,回傳值是不是正確,以及執行花費多少時間等等的,如果一個 method 一個 method 加的話,實在...

DaidoujiChen
2015/06/16
318
0
《你不知道的JavaScript》 读书笔记

本书属于基础类书籍,会有比较多的基础知识,所以这里仅记录平常不怎么容易注意到的知识点,不会全记,供大家和自己翻阅; 上中下三本的读书笔记: 《你不知道的JavaScript》 (上) 读书笔记 ...

大灰狼的小绵羊哥哥
03/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

网站安全维护公司对渗透测试php后门分析

很多想做渗透测试的朋友都想了解关于PHP后门漏洞的安全测试重点方法,以及该如何预防被中php后门,本节由我们的Sine安全高级渗透工程师进行全面的讲解,来让大家更好的理解和了解php代码的安全...

网站安全
9分钟前
2
0
在github上创建代码仓库时忘记添加.gitignore文件或修改了.gitignore该怎么办?

#清除本地缓存(改变成未track状态) #git rm -r --cached . 表示清除项目中所有文件的本地缓存 git rm -r --cached xxx #xxx表示不想版本控制的文件,比如小编可以输入test.o #.gitignore中的...

博爱飞扬
9分钟前
3
0
Fsimage 与 EditLog定义及合并过程

有很多客户端在向 hdfs 中写数据,同时有很多客户端在查数据,这就涉及到一个响应速度问题。因为只有一个 namenode ,客户端在写的时候,必须迅速记下来。 1. 向 namenode 询问可以存储到哪些...

Garphy
13分钟前
4
0
TI KeyStone C66x开发板处理器、NAND FLASH、NOR FLASH

TL6678F-EasyEVM是广州创龙基于SOM-TL6678F核心板而研发的一款多核高性能DSP+FPGA开发板。开发板采用核心板+底板方式,底板采用沉金无铅工艺的8层板设计,尺寸为247.33mm*139.8mm,它为用户提...

Tronlong创龙
31分钟前
5
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第13题

Choose the best answer. Examine this query: SELECT TRUNC (ROUND(156.00,-2),-1) FROM DUAL; What is the result? A) 16 B) 160 C) 150 D) 200 E) 100 Answer:D (解析:关键就是 round ......

oschina_5359
41分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部