我正在使用 Flex 和 Bison 编写解析器,并将各种标记定义为:
[0-9]+ { yylval.str=strdup(yytext); return digit; }
[0-9]+\.[0-9]* { yylval.str=strdup(yytext); return floating; }
[a-zA-Z_][a-zA-Z0-9_]* { yylval.str=strdup(yytext); return key; }
[a-zA-Z/][a-zA-Z_-/.]* { yylval.str=strdup(yytext); return string; }
[a-zA-Z0-9._-]+ { yylval.str=strdup(yytext); return hostname; }
["][a-zA-Z0-9!@#$%^&*()_-+=.,/?]* { yylval.str=strdup(yytext); return qstring1; }
[a-zA-Z0-9!@#$%^&*()_-+=.,/?]*["] { yylval.str=strdup(yytext); return qstring2; }
[#].+ { yylval.str=strdup(yytext); return comment;}
[ \n\t] {} /* Ignore white space. */
. {printf("ERR:L:%d\n", q); return ERROR;}
Run Code Online (Sandbox Code Playgroud)
它在字符串、qstring1 和 qstring2 的正则表达式中显示错误“字符类中的负范围”。
有人可以帮我解决我出错的地方吗?
规范是: 非引号字符串可以包含 ASCII 字母数字字符、下划线、连字符、正斜杠和句点,并且必须以字母或斜杠开头。
带引号的字符串可以在引号之间包含任何字母数字字符。
我为带引号的字符串采用了两个不同的字符串,以便满足更多的规范。
谢谢。
还使用了Bootstrap 3.0.我希望盒子的高度相同,右侧盒子上的链接位置正确,但是盒子在更多链接之前结束.
HTML
<div class="container body-content">
<div class="row categoryrow">
<div class="col-md-6 categoryblock">
<div class="category">
<div>
India faces acute shortage of cancer specialists, only one doctor available for every 2,500 patients
India faces acute shortage of cancer specialists, only one doctor available for every 2,500 patients
</div>
<span class="morelink">
<a href="/Category/Health">More..</a>
</span>
</div>
</div>
<div class="col-md-6 categoryblock">
<div class="category">
<div>
Sensex, Nifty slightly up in early trade
</div>
<span class="morelink">
<a href="/Category/Business">More..</a>
</span>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.categoryrow { …Run Code Online (Sandbox Code Playgroud) 似乎只有在开发目标之前弃用方法时,Xcode(6.3)中的弃用警告才会出现.我的开发目标是7.0,基础SDK是8.3.在iOS 7.0之前弃用的方法会给出警告,但如果在iOS 8.0中弃用该方法则不会.例:
[self.mainController didAnimateFirstHalfOfRotationToInterfaceOrientation:UIInterfaceOrientationPortrait];
[self.mainController willAnimateRotationToInterfaceOrientation:UIInterfaceOrientationPortrait duration:1];
Run Code Online (Sandbox Code Playgroud)
上面代码的第一行给出了警告(iOS 5.0中不推荐使用的方法)
第二行不会产生任何警告(iOS 8.0中不推荐使用的方法)
我认为这是不正确的,因为我错过了这个方法在iOS 8.0中被弃用的事实,因此我们的应用程序的真实用户(使用iOS 8.3)受到影响.如果我有警告,我会提前知道.
这是正常行为还是错误?
我在网站开发过程中尝试使用iron-flex-layout,当我花了几个小时试图让它工作时变得非常沮丧,但无济于事.最后,我决定尝试一个简单的网页,看它是否会起作用(认为它可能是我网站上的内容).但是,我尝试了以下代码,但仍然无法让它工作!谁能发现我的错误?
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="bower_components/iron-flex-layout/iron-flex-layout.html">
<style>
body {
font-weight: 300;
}
div {
border: 2px solid grey;
background-color: white;
}
.layout {
margin-bottom: 20px;
background-color: grey;
}
p {
margin: 5px;
}
</style>
</head>
<body fullbleed unresolved>
<div class="horizontal layout">
<div><p>div</p></div>
<div class="flex"><p>flex (horizontal layout)</p></div>
<div><p>div</p></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
也许我想要一些不可能的事情。我想要一个只有一个使用 Flexbox 设计的列的网站。目的是无论该列内容的大小如何,只有一列将其高度拉伸到页脚。类似于下面的结构:
我尝试用这段代码来实现这一点(我正在使用引导程序):
<div class="container-fluid">
<div class="row">
<header class="col-md-12">
stuff...
</header>
<div class="col-md-1 col-a">
stuff...
</div>
<div class="col-md-10 col-b">
Stuff...
</div>
<div class="col-md-1 col-c">
<div class="col-c-child">
Stuff..
</div>
</div>
<footer class="col-md-12">
Stuff
</footer>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后在 CSS 中添加特定于col-c和的内容col-c-child:
.col-c {
display: flex;
flex-direction: column;
height: 100%;
}
.col-c-child {
flex: 1;
}
Run Code Online (Sandbox Code Playgroud)
但不工作。任何想法?
解决方案:
header,其他行用于内容,其他行用于footer,也就是说 - 不要将所有内容都放在同一行中。display:flex使用and构建一个包含 col-a、col-b 和 col-c 的 div 包装器flex-direction: row;与其他语言一样,我们可以使用 //、/ --- /、#、% 等添加注释。同样,如果我想在 flex/bison 源代码中添加注释以更好地理解代码。我可以这样做吗?如果是,那么如何?每当我试图在互联网上搜索相同的内容时,答案通常是在 flex/bison 中定义注释,而不是关于如何在 flex/bison 源代码中添加注释。
我的文件结构是,
`pragma TOKEN1_NAME TOKEN1_VALUE
`pragma TOKEN2_NAME TOKEN2_VALUE
`pragma TOKEN3_NAME TOKEN3_VALUE
`pragma TOKEN4_NAME TOKEN4_VALUE
TEXT{
// A valid VHDL or verilog
}
`pragma TOKEN2_NAME TOKEN2_VALUE
TEXT{
// VHDL or verilog
}
Run Code Online (Sandbox Code Playgroud)
因为我正在处理Verilog和VHDL.我需要重新构建我的令牌名称,记住VHDL不区分大小写.我想对这两种情况使用单一解析器.同样的最有效方法是什么?flex是否支持某种功能以允许不区分大小写的模式匹配,如果文件的格式是Verilog,我们以后可以检查是否清除了令牌名称(包含所有小写字母)?
我正在尝试从BNF Grammar编写一个Flex/Bison文件.但是,当我尝试编译时出现错误,我不确定如何调试它们.
BNF Grammer:
<exp>::=<list> | head(<list>)
<list>::=<num1>::<list> | <list>@<list> | tail(<list>) | [<numlist>]
<numlist>::=<empty> | <num1><num2>
<num2>::=<empty> | ,<num1><num2>
<num1>::=<D1><N> | <N> | head(<list>)
<D1>::=<D1><N> | <D2>
<D2>::=[1-9]
<N>::=[0-9]
Run Code Online (Sandbox Code Playgroud)
我的Flex文件
%option noyywrap
%{
#include <stdlib.h>
#include <list>
using namespace std;
#define YYSTYPE list<int>
#include "listop.tab.h"
%}
hd head
tl tail
ap [@()\[\]]
con ::
n [0-9]
d2 [1-9]
d1 ({d2}{n}+)|{d2}
ws[ \t\n]+
%%
{d1} yylval.clear(); yylval.push_front(atoi(yytext)); return D1;
{n} yylval.clear(); yylval.push_front(atoi(yytext)); return N;
{hd} return HEAD;
{tl} return TAIL; …Run Code Online (Sandbox Code Playgroud) 我正在编写一个小型解析器,但是在使用 cmake 时遇到了问题。
我的目的是:flex Fl => F.cc,bison By => B.cc,my_program.cc + F.cc + B.cc => library
我的第一次尝试:
FIND_PACKAGE(FLEX REQUIRED)
if (FLEX_FOUND)
ADD_CUSTOM_TARGET(
flex_target
COMMAND ${FLEX_EXECUTABLE}
--header-file=${CMAKE_CURRENT_SOURCE_DIR}/F.h
--outfile=${CMAKE_CURRENT_SOURCE_DIR}/F.cc
${CMAKE_CURRENT_SOURCE_DIR}/F.l
COMMENT "Generating F.cc"
)
endif(FLEX_FOUND)
FIND_PACKAGE(BISON REQUIRED)
if (BISON_FOUND)
ADD_CUSTOM_TARGET(
bison_target
COMMAND ${BISON_EXECUTABLE}
--defines=${CMAKE_CURRENT_SOURCE_DIR}/B.h
--output=${CMAKE_CURRENT_SOURCE_DIR}/B.cc
${CMAKE_CURRENT_SOURCE_DIR}/B.y
COMMENT "Generating B.cc"
)
endif(BISON_FOUND)
add_library(my_library my_program.cc F.cc B.cc)
add_dependencies(my_library bison_target)
add_dependencies(my_library flex_target)
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了每次运行 make 时都会调用 flex 和 bison 命令,甚至 Fl 和 By 文件都没有更改。
然后我尝试切换到使用 ADD_CUSTOM_COMMAND 而不是 ADD_CUSTOM_TARGET。
FIND_PACKAGE(FLEX REQUIRED)
if (FLEX_FOUND)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/F.cc
SOURCE …Run Code Online (Sandbox Code Playgroud) flex-lexer ×5
bison ×3
flexbox ×3
css ×2
html ×2
yacc ×2
actionscript ×1
apache-flex ×1
bnf ×1
cmake ×1
comments ×1
deprecated ×1
ios ×1
lex ×1
objective-c ×1
polymer-1.0 ×1
regex ×1
verilog ×1
vhdl ×1
xcode ×1